<HTML>
<HEAD>
<TITLE>JavaScript Source Code 3000:  Calculators:  Bubble Sort</TITLE>
<META HTTP-EQUIV="JavaScript Source Code 3000" CONTENT = "no-cache">
<META NAME="date" CONTENT="2000-09-09">
<META NAME="channel" CONTENT="Web Developer">
<META NAME="author" CONTENT="David Sturgeon (sturgeon.auto@gsln02e.et.gs.com)">
<META NAME="section" CONTENT="Calculators">
<META NAME="description" CONTENT="Sorts using the bubbleSort method.  Simply enter a list of numbers into the text box and click sort.">

<SCRIPT LANGUAGE="JavaScript">

<!-- Original:  David Sturgeon (sturgeon.auto@gsln02e.et.gs.com) -->
<!-- Web Site:  http://www.doc.ic.ac.uk/~dms99 -->




<!-- Begin
function doSort(form) {
nanExists = false;
inputString = form.numbers.value;
inputNumbers = inputString.split(",");
for (var i = 0; i < inputNumbers.length; i++) {
inputNumbers[i] = parseInt(inputNumbers[i], 10);
if (isNaN(inputNumbers[i])) {
nanExists = true;
break;
   }
}
inputNumbers = bubbleSort(inputNumbers, 0, inputNumbers.length - 1);
if (nanExists) 
form.answers.value = "Invalid Input, numbers must be seperated by commas";
else
form.answers.value = resultString(inputNumbers, 0);
}
function resultString(inputArray, num) {
if ((inputArray.length  - 1) >= num) 
return (inputArray[num] + "," + resultString(inputArray,(num + 1)));
else return "";
}
function bubbleSort(inputArray, start, rest) {
for (var i = rest - 1; i >= start;  i--) {
for (var j = start; j <= i; j++) {
if (inputArray[j+1] < inputArray[j]) {
var tempValue = inputArray[j];
inputArray[j] = inputArray[j+1];
inputArray[j+1] = tempValue;
      }
   }
}
return inputArray;
}
//  End -->
</script>
</HEAD>

<BODY BGCOLOR=#ffffff vlink=#0000ff>

<BR>
<center>
<table width=600 cellpadding=0 cellspacing=10>
<tr>
<td width=468 align=center>

    
    
</td>
<td width=120 align=center>
    
</td>
</tr>
</table>
<BR>
<BR>
<basefont size=3>
<FONT SIZE="+2" FACE="Helvetica,Arial">
<A HREF="../index.htm" /" TARGET="_top"><FONT COLOR="#0000FF"><b>Home</b></font></A>
<img src="../img/arrow.gif" /img/arrow.gif" height=13 width=7 border=0 alt="}">
<A HREF="index.htm" /calculators/"><font color="#FF0000"><b>Calculators</b></font></A>
<img src="../img/arrow.gif" /img/arrow.gif" height=13 width=7 border=0 alt="}">
<FONT COLOR="#006666"><b>Bubble Sort</b></font></font>
<BR>
<BR>
<table BORDER=0 WIDTH=486 CELLPADDING=3 CELLSPACING=0>
<tr><td><font FACE="helvetica,arial,geneva">
<br>
<br>
<!-- Description --><!--content_start-->
Sorts using the bubbleSort method.  Simply enter a list of numbers into the text box and click sort.
<hr>
</td></tr>
</table>
<!-- Demonstration -->
<center>
<form>
<table border=1>
<td>Enter numbers here:  <input type=text name=numbers size=75 value="4,2,5,1,7,8,9,3,6,3,6,2,9,8,5,2,6,7,3,4,5,6,8,1,9,4,3,6,2,5,8,4"></td>
<tr>
<td>The sorted numbers are: <input type=text name=answers size=75></td>
</tr>
<tr>
<td colspan=2 align=center><input type=button value="Sort!" onClick="doSort(this.form)"></td>
</tr>
</table>
</form>
</center>
<P>
<P>
<a name="source">
<table BORDER=0 WIDTH=486 CELLPADDING=3 CELLSPACING=0>
<tr><td BGCOLOR=yellow><font FACE="helvetica,arial,geneva"><b>JavaScript Source Code 3000:  Calculators:  Bubble Sort</b>
<p>Simply click inside the window below, use your cursor to highlight the script, and copy (type Control-c or Apple-c) the script into a new file in your text editor (such as Note Pad or Simple Text) and save (Control-s or Apple-s).  The script is yours!!!
<br><br></font></td></tr>
<tr><td BGCOLOR=yellow ALIGN=CENTER>
<form NAME="copy">

<DIV align="center">
<input type=button value="Highlight All" onClick="javascript:this.form.txt.focus();this.form.txt.select();">&nbsp;&nbsp;&nbsp;&nbsp;
<INPUT TYPE="text" NAME="total" VALUE="Script Size:  1.92 KB" size=24>
</DIV>

<textarea NAME="txt" ROWS=20 COLS=75 WRAP=VIRTUAL>

&lt;!-- TWO STEPS TO INSTALL BUBBLE SORT:

  1.  Copy the coding into the HEAD of your HTML document
  2.  Add the last code into the BODY of your HTML document  --&gt;

&lt;!-- STEP ONE: Paste this code into the HEAD of your HTML document  --&gt;

&lt;HEAD&gt;

&lt;SCRIPT LANGUAGE="JavaScript"&gt;
&lt;!-- Original:  David Sturgeon (sturgeon.auto@gsln02e.et.gs.com) --&gt;
&lt;!-- Web Site:  http://www.doc.ic.ac.uk/~dms99 --&gt;

&lt;! &gt;
&lt;! &gt;

&lt;!-- Begin
function doSort(form) {
nanExists = false;
inputString = form.numbers.value;
inputNumbers = inputString.split(",");
for (var i = 0; i &lt; inputNumbers.length; i++) {
inputNumbers[i] = parseInt(inputNumbers[i], 10);
if (isNaN(inputNumbers[i])) {
nanExists = true;
break;
   }
}
inputNumbers = bubbleSort(inputNumbers, 0, inputNumbers.length - 1);
if (nanExists) 
form.answers.value = "Invalid Input, numbers must be seperated by commas";
else
form.answers.value = resultString(inputNumbers, 0);
}
function resultString(inputArray, num) {
if ((inputArray.length  - 1) &gt;= num) 
return (inputArray[num] + "," + resultString(inputArray,(num + 1)));
else return "";
}
function bubbleSort(inputArray, start, rest) {
for (var i = rest - 1; i &gt;= start;  i--) {
for (var j = start; j &lt;= i; j++) {
if (inputArray[j+1] &lt; inputArray[j]) {
var tempValue = inputArray[j];
inputArray[j] = inputArray[j+1];
inputArray[j+1] = tempValue;
      }
   }
}
return inputArray;
}
//  End --&gt;
&lt;/script&gt;
&lt;/HEAD&gt;

&lt;!-- STEP TWO: Copy this code into the BODY of your HTML document  --&gt;

&lt;BODY&gt;

&lt;center&gt;
&lt;form&gt;
&lt;table border=1&gt;
&lt;td&gt;Enter numbers here:  &lt;input type=text name=numbers size=75 value="4,2,5,1,7,8,9,3,6,3,6,2,9,8,5,2,6,7,3,4,5,6,8,1,9,4,3,6,2,5,8,4"&gt;&lt;/td&gt;
&lt;tr&gt;
&lt;td&gt;The sorted numbers are: &lt;input type=text name=answers size=75&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=2 align=center&gt;&lt;input type=button value="Sort!" onClick="doSort(this.form)"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;

 

&lt;!-- Script Size:  1.92 KB --&gt;</textarea><br><font FACE="helvetica,arial,geneva"></font></td></tr>

</table>
</form>
</FONT>
</CENTER>


</center>
</body></html>
